package com.zp.self.module.level_4_算法练习.数据结构.二叉树;

import org.junit.Test;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * @author By ZengPeng
 */
public class 力扣_783_二叉搜索树节点最小距离 {
    @Test
    public void main() {

        System.out.println(minDiffInBST( TreeNode.initRoot()));
    }

    /**
    题目：给你一个二叉搜索树的根节点 root ，返回 树中任意两不同节点值之间的最小差值 。
     差值是一个正数，其数值等于两值之差的绝对值。

     示例 1：
     输入：root = [4,2,6,1,3]
     输出：1

     示例 2：
     输入：root = [1,0,48,null,null,12,49]
     输出：1

    分析：【P 💔💔】
       1.深度优先+中序遍历：使用队列记录值 ，成员变量记录当前最小值
            --执行用时：0 ms, 在所有 Java 提交中击败了100.00%的用户
            --时长：40分钟  --功力变弱了啊。

    边界值 & 注意点：
       1.
     **/
    private int min = Integer.MAX_VALUE,pro=-100000;
    public int minDiffInBST( TreeNode root) {
        dfs(root);
        return min;
    }

    private void dfs(TreeNode root) {
        if(root==null)
            return;
        dfs(root.left);
        min = Math.min(min,root.val-pro);
        pro=root.val;
        dfs(root.right);
    }
}
